/**
 * 计算二叉树的带权路径长度
 */

struct Node
{
    int weight;
    Node* left;
    Node* right;
};

/**
 * 在计算数的高度的基础上
 * 当遇到了叶子节点，就将叶子节点乘上他的高度，然后加到sum上
 */
int func(Node* root){
    int sum=0;
    getWeight(root,0);
    return sum;
}

void getWeight(Node* root,int height){
    if(root==nullptr) return;
    //叶子节点的权值相加
    if(root->left==nullptr&&root->right==nullptr){
        sum+=height*root->weight;
    }
    getWeight(root->left,height+1);
    getWeight(root->right,height+1);
}
